home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
041-050
/
amok49
/
oprof
/
txt
/
profticks.mod
< prev
next >
Wrap
Text File
|
1993-11-04
|
3KB
|
126 lines
(*
:Program. ProfTicks
:Author. Volker Rudolph
:Address. Lettow-Vorbeck-Str. 11 / 6750 Kaiserslautern 26
:Phone. 06301/8566
:Version. 1.01
:Date. 4.11.90
:Copyright. Volker Rudolph (Shareware)
:Language. Oberon
:Translator. Oberon V1.17.1
:Imports. MicroTimer, Printf
:Contents. Laufzeit-Statistiken über Programme
*)
MODULE ProfTicks;
IMPORT d:Dos,NoGuru,io,
mi:MicroTimer,prof:ProfRunTime,p:Printf;
CONST
Limit = 200;
VAR
ticks,ticks2:LONGINT;
minutes:INTEGER;
seconds:INTEGER;
micros:LONGINT;
(* ------------------------------------------------------------------------ *)
PROCEDURE ^NormOdd(i:INTEGER):BOOLEAN;
PROCEDURE NormEven(i:INTEGER):BOOLEAN;
BEGIN
IF i = 0 THEN
RETURN TRUE;
ELSE
RETURN NormOdd(i-1);
END; (* IF *)
END NormEven;
PROCEDURE NormOdd(i:INTEGER):BOOLEAN;
BEGIN
IF i = 0 THEN
RETURN FALSE;
ELSE
RETURN NormEven(i-1);
END; (* IF *)
END NormOdd;
PROCEDURE Norm;
VAR
res:BOOLEAN;
i:INTEGER;
BEGIN
i := 0;
WHILE i < Limit DO
res := NormEven(i);
INC(i);
END; (* WHILE *)
END Norm;
(* ------------------------------------------------------------------------ *)
PROCEDURE ^Odd(i:INTEGER):BOOLEAN;
PROCEDURE Even(i:INTEGER):BOOLEAN;
BEGIN
prof.Entry("ProfTicks.Even",15);
IF i = 0 THEN
prof.Exit("ProfTicks.Even",15);
RETURN TRUE;
ELSE
prof.Exit("ProfTicks.Even",15);
RETURN Odd(i-1);
END; (* IF *)
END Even;
PROCEDURE Odd(i:INTEGER):BOOLEAN;
BEGIN
prof.Entry("ProfTicks.Odd",98);
IF i = 0 THEN
prof.Exit("ProfTicks.Odd",98);
RETURN FALSE;
ELSE
prof.Exit("ProfTicks.Odd",98);
RETURN Even(i-1);
END; (* IF *)
END Odd;
PROCEDURE Prof;
VAR
res:BOOLEAN;
i:INTEGER;
BEGIN
i := 0;
WHILE i < Limit DO
res := Even(i);
INC(i);
END; (* WHILE *)
END Prof;
(* ------------------------------------------------------------------------ *)
BEGIN
p.writeProc := io.WriteString;
prof.Quiet := TRUE;
p.Printf0("\nPlease wait ... ");
d.Delay(100);
mi.Start;
Norm;
mi.Stop(ticks);
mi.TicksToTime(minutes,seconds,micros,ticks);
p.Printf3("\n\nNormal: %ld min. %ld sec. %03ld msec.\n",minutes,seconds,micros DIV 1000);
mi.Start;
Prof;
mi.Stop(ticks2);
mi.TicksToTime(minutes,seconds,micros,ticks2);
p.Printf3("OProf: %ld min. %ld sec. %03ld msec.\n\n",minutes,seconds,micros DIV 1000);
p.Printf1("ProfTicks: %ld\n",(ticks2-ticks) DIV (prof.TotalCalls * 2)+1);
END ProfTicks.